package Demo1;

import java.util.Random;

public class T13 {

    private static final int n = 10_000_000;
    private static  final int[]arr = new int[n];
    private static long sumEven = 0; // 偶数索引元素的和
    private static long sumOdd = 0; // 奇数索引元素的和
    public static void main(String[] args) throws InterruptedException {
        /*
        给定一个很长的数组 (长度 1000w), 通过随机数的方式生成 1-100 之间的整数.
        实现代码, 能够创建两个线程, 对这个数组的所有元素求和.
        其中线程1 计算偶数下标元素的和, 线程2 计算奇数下标元素的和.
        最终再汇总两个和, 进行相加
        记录程序的执行时间.
        */
        Random random = new Random();
//        1.生成随机数,进行赋值
        for (int i = 0; i < n; i++) {
            arr[i] = random.nextInt(100)+1;
        }
        long startTime = System.currentTimeMillis();//开始时间

//        创建线程
        Thread thread1 = new Thread(()->{
            for (int i = 0; i < n; i+=2) {
                sumEven += arr[i];
            }
        });

        Thread thread2 = new Thread(()->{
            for (int i = 1; i < n; i+=2) {
                sumOdd += arr[i];
            }
        });

//        开启线程
        thread1.start();
        thread2.start();

        thread1.join();//堵塞
        thread2.join();

        long sum = sumEven+sumOdd;//计算和
        long endTime = System.currentTimeMillis();
        System.out.println("和为: "+sum+", 时间为: "+(endTime-startTime));
    }
}
